package com.linkit.main.widget;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.linkit.main.MainActivity;
import com.linkit.main.R;
import com.linkit.utils.Utils;

/**
 * ndluc : Đây là 1 widget gồm 2 trường: icon và text theo hướng dọc
 */
public class ExtendedButton extends LinearLayout {

	private MainActivity main;
	private ExtendedTextView textView;

	private ImageView iconView;

	private int activeIcon;
	private int inactiveIcon;

	public ExtendedButton(Context context, AttributeSet attrs) {
		super(context, attrs);
		main = (MainActivity) context;
		LinearLayout.inflate(context, R.layout.header_button, this);

		textView = (ExtendedTextView) findViewById(R.id.header_button_text);
		iconView = (ImageView) findViewById(R.id.header_button_icon);
		TypedArray a = context.obtainStyledAttributes(attrs,
				R.styleable.ExtendedButton);
		String text = a.getString(R.styleable.ExtendedButton_text);
		textView.setText(text);

		Drawable icon = a.getDrawable(R.styleable.ExtendedButton_iconsrc);
		iconView.setImageDrawable(icon);

		a.recycle();
	}

	public void setTextHeader(String textValue) {
		textView.setText(textValue);
	}

	public void setTextColor(int color) {
		textView.setTextColor(color);
	}

	public void setIconHeader(int iconId) {
		iconView.setImageDrawable(main.getResources().getDrawable(iconId));
	}

	public void setHeaderFocus(String textValue, boolean isFocus) {
		if (textValue != null) {
			setTextHeader(textValue);
		}
		if (isFocus) {
			setIconHeader(activeIcon);
			textView.setTextColor(Utils.getColor(R.color.header_text_focus));
		} else {
			setIconHeader(inactiveIcon);
			textView.setTextColor(Utils.getColor(R.color.header_text_color));
		}
		invalidate();
	}

	/**
	 * thiết lập icon cho header
	 * 
	 * @param active
	 * @param inactive
	 */
	public void setIconGroup(int active, int inactive) {
		activeIcon = active;
		inactiveIcon = inactive;
	}
	

	/**
	 * thiết lập trạng thái không kích hoạt cho view
	 * @param view
	 */
	
	private void disableButton() {
		setBackgroundColor(Utils.getColor(R.color.header_bkg));
		setTextColor(Utils.getColor(R.color.gray_dark));
		setIconHeader(R.drawable.routes_save_icon);
		setEnabled(false);
	}

	/**
	 * thiết lập trạng thái kích hoạt cho view
	 */
	private void enableButton() {
		setBackgroundResource(R.drawable.selector_item_bkg);
		setTextColor(Utils.getColor(R.color.white_full));
		setIconHeader(R.drawable.routes_save_icon_focused);
		setEnabled(true);
	}
	
	/**
	 * Thiết lập trạng thái không kích hoạt hoặc kích hoạt cho view
	 * @param isEnable
	 */
	public void setEnable(boolean isEnable){
		if (isEnable) {
			enableButton();
		} else {
			disableButton();
		}
	}
}
